//
//  ComputingStrategyProtocol.h
//  CocoaSynth
//
//  Created by Jérémy Brault on 06/02/10.
//  Copyright 2010 None. All rights reserved.
//

#import <Cocoa/Cocoa.h>

#import "SampleProtocol.h"
#import "Module.h"

/*!
    @protocol		ComputingStrategyProtocol
    @abstract		ComputingStrategyProtocol declares different methods related to an algorithm's execution. An algorithme can be configure with some
					data that represents the context, and can be executed. The result of the execution is then available.
	@discussion		The purpose of this protocol is to offer the possibility to dynamically change the used strategy.
*/
@protocol ComputingStrategyProtocol <NSObject>

/*!
    @method     setModule:
    @abstract   This method set the context for the strategy.
    @param      aModule The context of the strategy
*/
- (void)setModule:(Module*)aModule;

/*!
    @method     execute
    @abstract   Execute the algorithm.
    @result     The result of the algorithm's execution.
*/
- (id<SampleProtocol>)execute;

@end
